#include <bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn = 2e5 + 5;
int n;
vector<int>ad[maxn];
int dp[maxn][2]; // 表示 第 i 个节点是否选择时的最大值


void dfs(int u, int p){
	for (int to: ad[u]) {
		if (to==p) {
			continue;
		}
		dfs(to, u);
		
		// 注意这里面是 += 不是 +1
		dp[u][1] += dp[to][0];
		dp[u][0] += max(dp[to][1], dp[to][0]);
	}
}

void solve(){
	cin >>n;
	for (int i=1;i<n;i++) {
		int a, b;
		cin >>a>>b;
		ad[a].push_back(b);
		ad[b].push_back(a);
	}
	
	
	for (int i=1;i<=n;i++) {
		dp[i][1]=1;
	}
	
	
	dfs(1, 0);
	int ans = max(dp[1][0], dp[1][1]);
	cout << ans << '\n';
}



signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
